'''

第三方协程库 gevent

'''

import gevent
#
# def f1():
#     for i in range(5):
#         print('fadfa %s' %i)
#         gevent.sleep(0)
#
# def f2():
#     for i in range(5):
#         print('daff2 %s' % i)
#         gevent.sleep(0)
#
# t1 = gevent.spawn(f1)
# t2 = gevent.spawn(f2)
#
# gevent.joinall([t1, t2])
'''
gevent的优势不仅仅是在代码中调用方便，厉害的是它拥有的monkey机制。
假设你不愿意修改原来已经写好的python代码，但是又想充分利用gevent机制，
那么你就可以用monkey来做到这一点。你所要做的就是在文件开头打一个patch，
那么它就会自动替换你原来的thread、socket、time、multiprocessing等代码，
全部变成gevent框架。这一切都是由gevent自动完成的。
注意这个patch是在所有module都import了之后再打，否则没有效果。
 
 甚至在编写的Web App代码的时候，不需要引入gevent的包，也不需要改任何代码，
 仅仅在部署的时候，用一个支持gevent的WSGI服务器，就可以获得数倍的性能提升。
 '''
from gevent import monkey; monkey.patch_all()
import gevent
import requests
from datetime import datetime
import time

def f(url):
    print('time: %s, GET: %s' % (datetime.now(), url))
    resp = requests.get(url)
    print('time: %s, %d bytes received from %s.' % (
        datetime.now(), len(resp.text), url))

t = time.time()

gevent.joinall([
        gevent.spawn(f, 'https://www.baidu.com/'),
        gevent.spawn(f, 'https://www.sina.com/'),
        gevent.spawn(f, 'https://www.sohu.com/'),
])
print(time.time()-t)
